Improved system performance and reduced errors are high priority goals of many processing environments, including those environments that support virtualization. In an effort to achieve these goals, diagnostic and tuning tools are employed. One such tool is a measurement facility that gathers data relating to processing that occurs within a processing environment.
Specifically, a measurement facility is used to accumulate activity counts of specific events that occur within the hardware (such as cycle count, instruction count, etc.) and/or to periodically take a snapshot of a central processing unit executing within the environment. The facility records state information associated with the central processing unit. This information is used for debugging and/or to improve system performance.
Today, at each measurement time, the data is collected, stored in a register, and an interrupt is provided to the control program. Upon interruption, the control program reads out the measurement data, resets the register and resumes the operation. This interruption at each measurement interval creates significant system overhead, and in some real-time environments, may even distort the measured data. This overhead problem causes users to limit the amount of measurement data to be collected, and thus, limit the practical use of the measurement facility.
Moreover, a problem exists in virtual environments because only one measurement facility is implemented in a central processing unit, but the facility may be shared by multiple guests. Such shared use can corrupt the collected data.